package controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import pojo.MyUser;
import service.UserService;
import service.UserServiceImpl;

import java.util.List;

/**
 * author: 李林凯
 * time:2025/6/16 14:27
 **/
@Controller
public class UserController {
    @Autowired
    private UserService userService;
    //虽然很难，但还是出来了
    //以下是分页
    @GetMapping("/user/list")
    public String listUsers(@RequestParam(defaultValue = "1") int page,
                            @RequestParam(defaultValue = "3") int limit,
                            Model model) {
        //1.计算总页数
        int totalCount=userService.getUserCount();//获得用户总数
        int totalPage=(int)Math.ceil((double)totalCount/limit);//总页数=总数/每页数量（向上取整）

        //2.校验页码合法性
        if(page<1) page=1;
        if(page>totalPage && totalPage>0) page=totalPage;

        //3.计算数据库查询的偏移量（分页参数）
        int offset=(page-1)*limit;

        //4.查询当前页的用户数据
        List<MyUser> users=userService.getUserByPage(offset, limit);

        //5.向页面传递数据
        model.addAttribute("users", users);
        model.addAttribute("currentPage", page);
        model.addAttribute("totalPages", totalPage);

        //6.返回视图名称（对应userList.jsp页面）
        return "userList";
    }

    //上面的你一定都学会了吧
    //来不及看上面了，接下来迎来的是增删改查

    //增    1.编写用户输入新数据的页面
    @GetMapping("/user/add")
    public String showAddUserForm() {
        return "addUser";
    }
    //增    2.添加完数据的页面
    @PostMapping("/user/add")
    public String insertUser(MyUser user) {
        userService.insertUser(user);//调用业务层保存用户到数据库
        return "redirect:/user/list";//重定向到用户列表页，避免重复提交
    }

    //删
    @GetMapping("/user/delete/{id}")
    public String deleteUser(@PathVariable int id) {
        userService.deleteUserById(id);
        return "redirect:/user/list";
    }

    //改
    @PostMapping("/user/update")
    public String updateUser(MyUser user) {
        userService.updateUser(user);
        return "redirect:/user/list";
    }

    //查 (通过id)
    @GetMapping("/user/edit/{id}")
    public String editUser(@PathVariable int id, Model model) {
        MyUser user=userService.selectUserById(id);
        model.addAttribute("user", user);//将用户信息传递到编辑页面
        return "editUser";//显示编辑页面（editUser.jsp)
    }

}
